// 目的：
/*
通过 localhost:3000 显示首页 - index.html
通过 locahost:3000/index.html 显示首页 - index.html
通过 localhost:3000/list.html 显示列表页 - list.html
*/

// 搭建服务器
const fs = require('fs')
const { createProxyMiddleware } = require('http-proxy-middleware')
let fn = createProxyMiddleware({
    target: 'http://you.163.com/xhr/item/getMoreNewItem.json',
    changeOrigin: true,
    pathRewrite: {
        '/wangyi': ''
    }
})
require('http').createServer((req, res) => {
    let url = req.url;
    // 是接口还是需要显示页面 - 接口
    if (url.startsWith('/api')) {
        // 接口
        //注册
        if (url === '/api/register') {
            // 注册接口
            // 接收post提交上来的数据
            let str = '';
            req.on('data', chunk => {
                str += chunk.toString()
            })
            req.on('end', () => {
                // 接收到数据后，需要存起来
                // str就是接收到的数据 - 字符串
                // 先将字符串转成对象
                let arr = str.split('&')
                let obj = {}
                arr.forEach(item => {
                    let brr = item.split('=')
                    obj[brr[0]] = brr[1]
                })
                // obj就是将str转成的对象

                // 从data.json中判断是否有当前用户名
                // 读取data.json中的数据
                let data = fs.readFileSync("./project/src/json/dataw.json")
                data = data.toString()
                // 判断data中是否有数据
                let pbj = {
                    code: 0,
                    msg: '用户名被占用了'
                }
                // 判断是否是第一次注册 - 第一次注册，data是空字符串
                if (data === '') {
                    // 准备数组，将刚刚提交上来的数据，存入文件中
                    data = []
                    data.push(obj)
                    fs.writeFileSync('./project/src/json/dataw.json', JSON.stringify(data))
                    pbj = {
                        code: 1,
                        msg: '注册成功'
                    }
                    res.end(JSON.stringify(pbj))
                    return
                }
                // 非第一次提交
                data = JSON.parse(data)
                // 判断data中是否有obj中的username
                // 判断读取出来的数据(转成数组中)判断是否有刚刚提交上来的用户名
                let index = data.findIndex(item => item.dname === obj.dname)
                if (index < 0) {
                    // 没有找到 - 用户名没有被占用 - 直接存
                    // 没有的话再存进去
                    data.push(obj)
                    data = JSON.stringify(data)
                    fs.writeFileSync('./project/src/json/dataw.json', data)
                    pbj = {
                        code: 1,
                        msg: '注册成功'
                    }
                }
                // 找到数据了 - 用户名被占用了
                res.end(JSON.stringify(pbj))
            })
        }
        //登录
        if (url === '/api/login') {
            // 接收post提交上来的数据
            let str = '';
            req.on('data', chunk => {
                str += chunk.toString()
            })
            req.on('end', () => {
                // 接收到数据后，需要存起来
                // str就是接收到的数据 - 字符串
                // 先将字符串转成对象
                let arr = str.split('&')
                let obj = {}
                arr.forEach(item => {
                    let brr = item.split('=')
                    obj[brr[0]] = brr[1]
                })
                // obj就是将str转成的对象
                // 从data.json中判断是否有当前用户名
                // 读取data.json中的数据
                let data = fs.readFileSync("./project/src/json/dataw.json")
                data = data.toString()
                // 判断data中是否有数据
                let pbj = {
                    code: 0,
                    msg: '登陆失败'
                }
                data = JSON.parse(data)
                let index = data.findIndex(item =>{
                    // console.log(item.dname)
                    // console.log(obj.name)
                    return item.dname == obj.name && item.dpassword == obj.password
                })
                if (index < 0) {
                    // 没有找到
                }else if(index>=0){
                    pbj = {
                        code: 1,
                        msg: '登陆成功'
                    }
                }
                // 找到数据了 - 用户名被占用了
                res.end(JSON.stringify(pbj))
            })
        }
    } else {
        if (url === '/') {
            url = '/index.html'
        } else if (url.includes('.woff') || url.includes('.ttf')) {
            url = url.split('?')[0]
        } else if (url.includes('/wangyi')) {
            fn(req, res)
            return
        } else if (url === '/favicon.ico') {
            let data = fs.readFileSync('./project/src/favicon.ico')
            res.end(data)
        }
        let data = fs.readFileSync('./project/dist' + url)
        res.end(data)
    }

}).listen(3000)